from langchain_text_splitters import RecursiveCharacterTextSplitter

# [RecursiveCharacterTextSplitter]
# 递归分割(recursively)，这个⽂本分割器是⽤于通⽤⽂本的推荐⼯具。它接受⼀个字符列表作为参数。
# 它会按顺序尝试在这些字符上进⾏分割，直到块⾜够⼩。默认的字符列表是 ["\n\n","\n", " ", ""]。
# 这样做的效果是尽可能保持所有段落（然后是句⼦，再然后是单词）在⼀起，因为这些通常看起来是语义上相关的⽂本块。
# 1. ⽂本如何分割：根据字符列表。
# 2. 块⼤⼩如何衡量：根据字符数量。
try:
    with open("C:\\Users\\Administrator\\Desktop\\RAG\\模板\\示例文件\\splitter.txt", encoding="utf") as f:
        state_of_the_union = f.read()
except Exception as e:
    print(f'读取文件时发生错误: {e}')
    exit(1)
# 初始化 RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
# chunk_size：每个块的字符或标记的数量。
# chunk_overlap：连续块之间的重叠。
# length_function：确定如何计算chunk的长度。
    chunk_size=100,
    chunk_overlap=10,
    length_function=len,
    is_separator_regex=False,
)
#创建文档片段
texts = text_splitter.create_documents([state_of_the_union])
#打印前2个片段
print(f'第一个片段: \n{texts[0]}')
print(f'第二个片段: \n{texts[1]}')
